package red.social;

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class PerfilGrupo extends Activity implements OnClickListener, OnItemClickListener {
	private TextView nombreGrupoTextView, mensajitoMiembros;
	private Bundle parametros;
	private int idUsuarioLoggeado, idGrupo;
	private String nombreGrupo;
	private List<String> listaMostrarMiembrosGrupoRecuperados;
	private List<InfoMiembros> listaMiembros;
	private ListView lv;

	 private String ip;
	private String SERVLET_URL;
	private String datos, sitio;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.perfilgrupo);

		ip = getResources().getString(R.string.ip);
		SERVLET_URL = "http://"+ip+":8080/Modulo10-war/GruposServlet";
		
		nombreGrupoTextView = (TextView) this.findViewById(R.id.textViewNombreGrupoPerfil);
		mensajitoMiembros = (TextView) this.findViewById(R.id.textViewMiembrosPerfilGrupo);
		lv = (ListView) this.findViewById(R.id.listViewMiembrosGrupo);
		Button irATablon = (Button) this.findViewById(R.id.buttonVerTablonPerfilGrupo);

		// asignamos listeners
		irATablon.setOnClickListener(this);

		// recuperamos par�mentros
		parametros = getIntent().getExtras();

		if (parametros.isEmpty()) {
			Toast.makeText(this, "No se han recuperado par�metros",
					Toast.LENGTH_LONG).show();
		} else {
			this.idUsuarioLoggeado = parametros.getInt("idUsuario");
			this.idGrupo = parametros.getInt("idGrupo");
			this.nombreGrupo = parametros.getString("nombreGrupo");

			// rellenamos el textView
			if (this.nombreGrupo != null) {
				this.nombreGrupoTextView.setText(this.nombreGrupo);
			}

			if (this.idGrupo != 0) {

				// recuperamos los miembros del grupo por id de grupo
				datos = "?peticion=RECUPERAMIEMBROSGRUPOPORIDGRUPO&idGrupo="+idGrupo;

				sitio = SERVLET_URL + datos;
				
				try {
					URL ob = new URL(sitio);
					URLConnection conn = ob.openConnection();
					conn.setDoInput(true);
					conn.setDoOutput(true);
					InputStream in = conn.getInputStream();
					DataInputStream dos = new DataInputStream(in);

					int numMiembros = dos.readInt();
					this.listaMostrarMiembrosGrupoRecuperados = new ArrayList<String>();
					this.listaMiembros = new ArrayList<InfoMiembros>();

					if (numMiembros != 0) { // si recuperamos alg�n grupo
						// cambiamos texto del textView mensajito del perfil del grupo
						this.mensajitoMiembros.setText("Miembros del grupo");
						
						for (int i = 0; i < numMiembros; i++) {
							int idMiembro = dos.readInt();
							String nombreApeMiembro = dos.readUTF();
							
							this.listaMostrarMiembrosGrupoRecuperados.add(nombreApeMiembro);
							InfoMiembros grupo = new InfoMiembros(Integer.valueOf(idMiembro),nombreApeMiembro);
							this.listaMiembros.add(grupo);
						}
						
						// rellenamos el listView
						ArrayAdapter<String> lva = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listaMostrarMiembrosGrupoRecuperados);
						lv.setAdapter(lva);
						lv.setOnItemClickListener(this); // asignamos el listener
					}
					
					// cerramos el flujo
					dos.close();

				} catch (IOException e) {
					Toast.makeText(this, "IOEx: " + e.getMessage(),Toast.LENGTH_LONG).show();
				}
			}
		}
	}

	@Override
	public void onClick(View v) {
		if (v.equals(this.findViewById(R.id.buttonVerTablonPerfilGrupo))) {
			Intent irATablon = new Intent();
			irATablon.putExtra("idUsuario", this.idUsuarioLoggeado);
			irATablon.putExtra("idGrupo", this.idGrupo);
			irATablon.putExtra("nombreGrupo", this.nombreGrupo);
			irATablon.setClass(this, TablonPerfilGrupo.class);
			this.startActivity(irATablon);
		}
	}

	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1, int posicionPulsada, long arg3) {
		
		Intent irAPerfilGrupo = new Intent();
		irAPerfilGrupo.putExtra("idusuario", idUsuarioLoggeado);
		irAPerfilGrupo.putExtra("idamigo", String.valueOf(this.listaMiembros.get(posicionPulsada).getIdMiembro()));
		Log.i("PerfilGrupo","El id de usuario loggeado es: "+idUsuarioLoggeado);
		Log.i("PerfilGrupo","El id del amigo es: "+String.valueOf(this.listaMiembros.get(posicionPulsada).getIdMiembro()));
		irAPerfilGrupo.setClass(this, PerfilAmigo.class);
		this.startActivity(irAPerfilGrupo);
	}

}